package cn.org.xuanguang.kepler.hormos.rdb.util;

/**
 * 处理枚举的工具类
 */
public class EnumUtils {
    /**
     * 根据提供的枚举类型和字符串名称，获取对应的枚举值。
     *
     * @param type   枚举类型的Class对象，用于指定要查询的枚举类型。
     * @param string 枚举的字符串名称，按照通常的命名规则，不区分大小写。
     * @return 返回与给定字符串名称匹配的枚举值；如果找不到匹配项，则返回null。
     */
    public static Object getEnumValue(Class<?> type, String string) {
        // 遍历枚举类型的所有常量，查找名称匹配的枚举值
        for (Object enumValue : type.getEnumConstants()) {
            // 获取当前枚举常量的名称，并进行小写转换以与输入字符串匹配
            String enumName = enumValue.toString().toLowerCase();
            // 如果名称匹配，则返回该枚举常量
            if (enumName.equals(string)) {
                return enumValue;
            }
        }
        // 如果遍历完所有枚举常量仍未找到匹配项，则抛出异常
        throw new IllegalStateException(string + " is not a valid value for " + type.getSimpleName());
    }
}
